You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

29 lines
1022 B

import { defineEventHandler, createError, getQuery } from "h3";
import { dbGlobal } from "drizzle-pkg/lib/db";
import { users } from "drizzle-pkg/lib/schema/auth";
import { and, eq } from "drizzle-orm";
import { normalizePublicListPage } from "#server/utils/public-pagination";
import { getPublicRssPageBySlug } from "#server/service/rss";
export default defineEventHandler(async (event) => {
const publicSlug = event.context.params?.publicSlug;
if (!publicSlug || typeof publicSlug !== "string") {
throw createError({ statusCode: 400, statusMessage: "无效主页" });
}
const [owner] = await dbGlobal
.select({ id: users.id })
.from(users)
.where(and(eq(users.publicSlug, publicSlug), eq(users.status, "active")))
.limit(1);
if (!owner) {
throw createError({ statusCode: 404, statusMessage: "未找到" });
}
const q = getQuery(event);
const page = normalizePublicListPage(q.page);
const data = await getPublicRssPageBySlug(publicSlug, page);
return R.success(data);
});